package com.kmxd.ams.infra.system.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 部门表
 *
 * @author admin
 * @since 2022-03-24
 */
@Data
@TableName("sys_dept")
public class SysDept implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键ID */
  @TableId(type = IdType.ASSIGN_ID)
  private Long id;

  /** 所属公司id 用于type=1时，即部门的所属公司id，因为部门可能会有多级 */
  private Long comId;

  /** 编码 非空、不可重复且全局唯一 */
  private String code;

  /** 名称 非空 */
  private String name;

  /** 父节点id 自关联，顶级默认0 */
  private Long parentId;

  /** 层级 公司与部门分别从0开始 */
  private Integer level;

  /** id路径 （例如：集团的path：/1/ 股份的path：/1/2/ 软件的path：/1/2/3/） */
  private String pathCode;

  /** name路径（例如：集团的path：/集团/ 股份的path：/集团/股份/ 软件的path：/集团/股份/软件/） */
  private String pathName;

  /** 归档部门id 归档部门id，只有在类型为公司时有效，即type为0时有效 */
  private Long archdepId;

  /** 部门类型 用于标记部门类型，1：普通部门 2：档案部门，默认值1。此字段只对type=1即部门的数据有效 */
  private Integer deptType;

  /** 启用状态 0未启用，1启用，默认1 */
  private Integer status;

  /** 备注 */
  private String remarks;

  /** 排序 */
  private Integer sort;

  /** 创建人 */
  @TableField(fill = FieldFill.INSERT)
  private Long createBy;

  /** 创建时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @TableField(fill = FieldFill.INSERT)
  private Date createTime;

  /** 更新人 */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Long updateBy;

  /** 更新时间 */
  @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date updateTime;
}
